home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / cmsrc392.zip / SYMBOL.MF < prev    next >
Text File  |  1992-03-30  |  44KB  |  1,042 lines

  1. % This file defines the symbols of a \TeX\ math symbol font.
  2. % Character codes \0000--\0100 and \0133--\0177 are generated.
  3.  
  4. % (Improvements to the author's original characters were worked out in 1982
  5. % by Ronald F. Whitney and other members of
  6. % the American Mathematical Society.)
  7.  
  8. % Italic corrections have not been computed for most of these characters,
  9. % since they are generally not slanted.
  10.  
  11. minus=oct"000"; cdot=oct"001"; diamond=oct"005";
  12. plus_minus=oct"006"; o_plus=oct"010"; o_times=oct"012";
  13. eqv=oct"021"; leq=oct"024"; geq=oct"025";
  14. subset=oct"032"; superset=oct"033";
  15. left_arrow=oct"040"; right_arrow=oct"041";
  16. up_arrow=oct"042"; down_arrow=oct"043"; double_arrow=oct"044";
  17. infty=oct"061"; elt=oct"062";
  18. for_all=oct"070"; there_exists=oct"071"; false_that=oct"072";
  19. cup=oct"133"; cap=oct"134"; meet=oct"136"; join=oct"137";
  20. left_brace=oct"146"; right_brace=oct"147"; vertical=oct"152";
  21. backslash=oct"156"; integral=oct"163";
  22.  
  23. input sym;  % symbols common to other fonts
  24.  
  25. cmchar "Times operator";
  26. beginarithchar(oct"002"); pickup rule.nib;
  27. x1=good.x(1/sqrt2)[.5w,rt u]; y1=good.y(1/sqrt2)[math_axis,bot h];
  28. x2=x3=w-x1; x4=x1; .5[y1,y2]=.5[y3,y4]=math_axis; y2=y4;
  29. draw z1--z2; draw z3--z4;  % diagonals
  30. labels(1,2,3,4); endchar;
  31.  
  32. cmchar "Asterisk at the axis";
  33. beginchar(oct"003",9u#,v_center(x_height#));
  34. adjust_fit(0,0);
  35. numeric ast_flare; ast_flare=hround .7[thin_join,stem];
  36. x0=.5w; y0=h-.5x_height;
  37. for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
  38.  numeric theta; theta=angle(z[d]-z0);
  39.  fill z0+.5(0,-thin_join)rotated theta
  40.   ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
  41.   ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
  42.   ---z0+.5(0,thin_join)rotated theta--cycle; endfor  % diagonal at angle |d|
  43. labels(0,[-150],[-90],[-30],30,90,150); endchar;
  44.  
  45. cmchar "Elementary division operator";
  46. beginarithchar(oct"004"); pickup rule.nib;
  47. x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3);
  48. y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
  49. lft x1=hround u-eps; x2=w-x1; y1=y2=math_axis;
  50. draw z1--z2;  % bar
  51. pos3(dot_size,0); pos4(dot_size,90); z3=z4;
  52. pos5(dot_size,0); pos6(dot_size,90); z5=z6; x5=x3; .5[y3,y5]=math_axis;
  53. dot(3,4); dot(5,6);  % dots
  54. penlabels(1,2,3,4,5,6); endchar;
  55.  
  56. cmchar "Minus-or-plus sign";
  57. beginarithchar(oct"007"); pickup rule.nib;
  58. numeric shiftup; shiftup=-vround 1.5u;
  59. x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3;
  60. .5[y1,y2]=y3=y4=math_axis+shiftup; top y1=h+shiftup; y5=y6=y1;
  61. draw z1--z2;  % stem
  62. draw z3--z4;  % plus bar
  63. draw z5--z6;  % minus bar
  64. labels(1,2,3,4,5,6); endchar;
  65.  
  66. cmchar "Circle-minus operator";
  67. beginarithchar(oct"011"); pickup light_rule.nib; autorounded;
  68. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  69. circle_points; draw_circle;  % circle
  70. draw z2--z6;  % bar
  71. labels(1,2,3,4,5,6,7,8); endchar;
  72.  
  73. cmchar "Circle-divide operator";
  74. beginarithchar(oct"013"); pickup light_rule.nib; autorounded;
  75. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  76. circle_points; draw_circle;  % circle
  77. draw z1--z5;  % diagonal
  78. labels(1,2,3,4,5,6,7,8); endchar;
  79.  
  80. cmchar "Circle-dot operator";
  81. beginarithchar(oct"014"); pickup light_rule.nib; autorounded;
  82. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  83. circle_points; draw_circle;  % circle
  84. fill fullcircle scaled(1.3dot_size+eps) shifted(.5[z4,z8]);  % dot
  85. labels(1,2,3,4,5,6,7,8); endchar;
  86.  
  87. cmchar "Circle for copyright, etc.";
  88. beginchar(oct"015",18u#,asc_height#,desc_depth#); autorounded;
  89. adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
  90. lft x6=hround u; x2=w-x6; top y8=h+o; bot y4=-d-o;
  91. circle_points; draw_circle;  % circle
  92. labels(1,2,3,4,5,6,7,8); endchar;
  93.  
  94. cmchar "Circle operator";
  95. beginchar(oct"016",9u#,v_center(7u#));
  96. adjust_fit(0,0); pickup rule.nib; autorounded;
  97. lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis;
  98. circle_points; draw_circle;  % circle
  99. labels(1,2,3,4,5,6,7,8); endchar;
  100.  
  101. cmchar "Bullet";
  102. beginchar(oct"017",9u#,v_center(7u#));
  103. adjust_fit(0,0); pickup rule.nib; autorounded;
  104. lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis; circle_points;
  105. filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  106.   ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;  % circle and interior
  107. labels(1,2,3,4,5,6,7,8); endchar;
  108.  
  109. cmchar "Hardy's asymptotic equivalence sign";
  110. compute_spread(.45x_height#,.55x_height#);
  111. beginchar(oct"020",14u#,v_center(2spread#+rule_thickness#));
  112. adjust_fit(0,0); pickup rule.nib; autorounded;
  113. lft x1=hround u-eps; x3=x1; x2=x4=w-x1; x5=x6=.5w;
  114. y1=y2=good.y h; y3=y4; .5[y1,y3]=.5[y5,y6]=math_axis;
  115. y5=good.y .3[y1,y3];
  116. draw z1{x5-x1,2(y5-y1)}...z5{right}...z2{x2-x5,2(y2-y5)};  % upper bar
  117. draw z3{x6-x3,2(y6-y3)}...z6{right}...z4{x4-x6,2(y4-y6)};  % lower bar
  118. labels(1,2,3,4); endchar;
  119.  
  120. cmchar "Subset or equal to sign";
  121. compute_spread(.45x_height#,.55x_height#);
  122. spread#':=spread#; spread':=spread; % the spread of `$=$'
  123. compute_spread(5/4x_height#,3/2x_height#);
  124. beginchar(oct"022",14u#,v_center(spread#'+spread#+rule_thickness#));
  125. adjust_fit(0,0); pickup rule.nib; autorounded;
  126. lft x2=hround 1.5u-eps; x1=x3=w-x2;
  127. y1-y3=spread; y2=.5[y1,y3]; top y1=h;
  128. x4=x5=.5w; y4=y1; y5=y3;
  129. draw z1---z4...z2{down}...z5---z3;  % arc and bars
  130. x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % lower bar
  131. labels(1,2,3,4,5,8,9); endchar;
  132.  
  133. cmchar "Superset or equal to sign";
  134. compute_spread(.45x_height#,.55x_height#);
  135. spread#':=spread#; spread':=spread; % the spread of `$=$'
  136. compute_spread(5/4x_height#,3/2x_height#);
  137. beginchar(oct"023",14u#,v_center(spread#'+spread#+rule_thickness#));
  138. adjust_fit(0,0); pickup rule.nib; autorounded;
  139. lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
  140. y1-y3=spread; y2=.5[y1,y3]; top y1=h;
  141. x4=x5=.5w; y4=y1; y5=y3;
  142. draw z1---z4...z2{down}...z5---z3;  % arc and bars
  143. x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % lower bar
  144. labels(1,2,3,4,5,8,9); endchar;
  145.  
  146. cmchar "Precedes or equals sign";
  147. compute_spread(.45x_height#,.55x_height#);
  148. spread#':=spread#; spread':=spread; % the spread of `$=$'
  149. compute_spread(5/4x_height#,3/2x_height#);
  150. beginchar(oct"026",14u#,v_center(spread#'+spread#+rule_thickness#));
  151. adjust_fit(0,0); pickup rule.nib; autorounded;
  152. lft x2=hround 1.5u-eps; x1=x3=w-x2;
  153. y1-y3=spread; y2=.5[y1,y3]; top y1=h;
  154. draw z1{-u,-spread}...{left}z2;  % upper diagonal
  155. draw z3{-u,spread}...{left}z2;  % lower diagonal
  156. x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % bar
  157. labels(1,2,3,8,9); endchar;
  158.  
  159. cmchar "Follows or equals sign";
  160. compute_spread(.45x_height#,.55x_height#);
  161. spread#':=spread#; spread':=spread; % the spread of `$=$'
  162. compute_spread(5/4x_height#,3/2x_height#);
  163. beginchar(oct"027",14u#,v_center(spread#'+spread#+rule_thickness#));
  164. adjust_fit(0,0); pickup rule.nib; autorounded;
  165. lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
  166. y1-y3=spread; y2=.5[y1,y3]; top y1=h;
  167. draw z1{u,-spread}...{right}z2;  % upper diagonal
  168. draw z3{u,spread}...{right}z2;  % lower diagonal
  169. x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9;  % bar
  170. labels(1,2,3,8,9); endchar;
  171.  
  172. cmchar "Similarity sign";
  173. compute_spread(.45x_height#,.55x_height#);
  174. beginchar(oct"030",14u#,v_center(spread#+rule_thickness#));
  175. adjust_fit(0,0);
  176. pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
  177. if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
  178. lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
  179. bot y1=bot y3=-d; top y2=top y4=h;
  180. draw z1{up}...z2{right}..{right}z3...{up}z4;  % stroke
  181. labels(1,2,3,4); endchar;
  182.  
  183. cmchar "Approximate equality sign";
  184. compute_spread(.45x_height#,.55x_height#);
  185. spread#':=spread#; spread':=spread; % the spread of `$=$'
  186. compute_spread(.54x_height#,.66x_height#);
  187. beginchar(oct"031",14u#,v_center(spread#'+spread#+rule_thickness#));
  188. adjust_fit(0,0);
  189. pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
  190. if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
  191. lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
  192. y1=y3; top y2=top y4=h; top y2-bot y1=spread';
  193. draw z1{up}...z2{right}..{right}z3...{up}z4;  % upper stroke
  194. z1-z5=z2-z6=z3-z7=z4-z8=(0,spread);
  195. draw z5{up}...z6{right}..{right}z7...{up}z8;  % lower stroke
  196. labels(1,2,3,4,5,6,7,8); endchar;
  197.  
  198. cmchar "Much less sign";
  199. compute_spread(5/4x_height#,3/2x_height#);
  200. beginchar(oct"034",18u#,v_center(spread#+rule_thickness#));
  201. adjust_fit(if monospace:-u#,-u# else: 0,0 fi);